package com.aurora.source.di.dimodule;

import com.aurora.source.util.netutil.RequestEngine;
import com.aurora.source.util.netutil.RequestMethod;


import javax.inject.Singleton;

import dagger.Module;
import dagger.Provides;

/**
 * @author: wangbo
 * @description: 声明Module
 * @date: 2017-08-08   14:05
 */

/**
 * @ Module申明该类是Module类
 * @ Provides声明Module类中哪些方法是用来提供依赖对象，当Component类需要依赖对象时,他就会根据返回值的类型来在有@Provides注解的方法中选择调用哪个方法
 * @ Singleton的作用就是声明单例模式，^-^以后再也不用写单例模式了
 * @ Singleton的单利模式还以通过自定义注解来实现，这样做的目的就是方法查看该类的作用域
 * 如： @ Scope
 * @ Retention(RetentionPolicy.RUNTIME)
 * public @interface PerActivity {}
 * 此处的@Singleton可以用 @PerActivity来代替，可以清楚的看到这是作用字Activity，则能与Fragment区别
 */

@Module
public class DiModule {

    @Singleton
    @Provides
    RequestEngine requestEngine() {
        return new RequestEngine();
    }

    @Singleton
    @Provides
    RequestMethod requestMethod() {
        return new RequestMethod();
    }



}
